<?php

/**
 * @Author: wuchenge
 * @Date: 2020-11-30 15:23:53
 * @email: ligui0506@sina.com
 * @descript: 辅助函数
 */

/**
 * [reduceArray description]
 * @param  [type] $array [description]
 * @return [type]        [description]
 */
function reduceArray($array)
{
    $return = [];
    array_walk_recursive($array, function ($item) use (&$return) {
        $return[] = $item;
    });
    return $return;
}

/**
 * json 字符串转数组
 * @return [type] [description]
 */
function objStringToArray($jsonStr)
{
    $array = json_decode($jsonStr, true, 512, JSON_BIGINT_AS_STRING);

    if (JSON_ERROR_NONE === json_last_error()) {
        return (array) $array;
    }

    return [];
}

/**
 * //设置需要删除的文件夹 清空文件夹函数和清空文件夹后删除空文件夹函数的处理
 * @param  [type]  $path [description]
 * @param  boolean $flag [description]
 * @return [type]        [description]
 */
function deldir($path, $flag = false)
{
    $path = rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
    //如果是目录则继续
    if (is_dir($path)) {
        //扫描一个文件夹内的所有文件夹和文件并返回数组
        $p = scandir($path);
        foreach ($p as $val) {
            //排除目录中的.和..
            if ($val != "." && $val != "..") {
                //如果是目录则递归子目录，继续操作
                if (is_dir($path . $val)) {
                    //子目录中操作删除文件夹和文件
                    deldir($path . $val . DIRECTORY_SEPARATOR);

                    //目录清空后删除空文件夹
                    if ($flag) {
                        @rmdir($path . $val . DIRECTORY_SEPARATOR);
                    }
                } else {
                    //如果是文件直接删除
                    unlink($path . $val);
                }
            }
        }
    }
}
